//将共享的状态放入store中之后，每个组件的关注点就不一样的了，
//使用状态的，就直接使用，更改状态就直接更改，不需要关注不同组件间如何同步

import { EventEmitter } from 'events'  // Emitter发射器
//store需要拥有能绑定事件和触发事件的能力

const store = Object.assign({}, EventEmitter.prototype, {
    //存放共享状态的
    state:{
        num:0
    },

    getState () {
        return this.state
    },

    increment () {
        this.state.num ++
        console.log(this.state) // 数据已经更改，通知视图获取新的状态
        this.emit('num-change') // 触发-事件
    },
    addEventLinstener (callback) {
        // 当这个事件触发的时候，组件里面的函数就会执行
        this.on('num-change',callback)
    }
})
export default store

//$.extend
//var a = {
//	x:1
//}
//
//var b = {
//	y:2
//}
//
//var c = {
//	z:3
//}
//
//c = Object.assign({
//	z:3
//},a,b)